home *** CD-ROM | disk | FTP | other *** search
/ Gold Medal Software 5 / Gold Medal Software - Volume 5 (Gold Medal) (1995).iso / archive / crush13.arj / MANUAL.DOC < prev    next >
Text File  |  1994-10-06  |  43KB  |  970 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.                        _________________________________
  13.  
  14.                                    CRUSH v1.3
  15.  
  16.                            **** Shareware Manual ****
  17.  
  18.                        __________________________________
  19.  
  20.  
  21.  
  22.                              File Compression Tool
  23.             CRUSH (TM) Copyright Jeff Rollason, PocketWare (TM) 1994
  24.                               All Rights Reserved
  25.  
  26.  
  27.  
  28.  
  29.                         All Trademarks Are Acknowledged
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.           No part of this publication may be reproduced, transmitted,
  39.           transcribed,  stored in  a retrieval system, or  translated
  40.           into any other language in whole or in part, in any form or
  41.           by  any  means,  whether  it  be  electronic,   mechanical,
  42.           magnetic,  optical,  manual  or  otherwise,  without  prior
  43.           written consent of PocketWare.
  44.  
  45.             PocketWare PO Box 2369, Hendon, London NW4 1NR, England.
  46.              CIS 100031,3537.  Internet 100031.3537@compuserve.com
  47.  
  48.  
  49.    __________________________________________________________________________
  50.    Contents:
  51.  
  52.  
  53.    CONTENTS:                                                             Page
  54.  
  55.    Getting Started: . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
  56.  
  57.    The CRUSH program: . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
  58.  
  59.         Default use of PKZIP  . . . . . . . . . . . . . . . . . . . . . . . 3
  60.         -j    Use ARJ . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
  61.         -o    Use ZOO . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
  62.         -l    Use LHA . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
  63.         -h    Use HA  . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
  64.         -u    Use UC2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
  65.         -m    Moves file to archive . . . . . . . . . . . . . . . . . . . . 3
  66.         -c    Compare with and without CRUSH  . . . . . . . . . . . . . . . 3
  67.         -f    Optimise until 5 failed attempts to improve compression . . . 4
  68.         -f<n> Optimise until "n" failed attempts to improve compression . . 4
  69.         -t    Only create CRUSH archive if 5% improvement . . . . . . . . . 4
  70.         -t<n> Only create CRUSH archive if "n"% improvement . . . . . . . . 4
  71.         -r    Recurse subdirectories  . . . . . . . . . . . . . . . . . . . 4
  72.         -:    Set range(s) of dates . . . . . . . . . . . . . . . . . . . . 5
  73.         -x    Exclude pathspecs . . . . . . . . . . . . . . . . . . . . . . 6
  74.         -y    Answer YES to all questions . . . . . . . . . . . . . . . . . 6
  75.         -z    Add CRUSH archive comment . . . . . . . . . . . . . . . . . . 6
  76.         -v    Show files for adding without CRUSHing  . . . . . . . . . . . 6
  77.         -n    Store files without paths . . . . . . . . . . . . . . . . . . 7
  78.         -Q    Query each file to be archived. . . . . . . . . . . . . . . . 7
  79.         -q    QUIET mode, no output . . . . . . . . . . . . . . . . . . . . 7
  80.         -a    Create an additional index  . . . . . . . . . . . . . . . . . 7
  81.         -e    Use the existing archive for comparison . . . . . . . . . . . 7
  82.         -C    Colour off  . . . . . . . . . . . . . . . . . . . . . . . . . 8
  83.         -C<n> Set colour  . . . . . . . . . . . . . . . . . . . . . . . . . 8
  84.         -s    Minimise temporary disk space (slow!) . . . . . . . . . . . . 8
  85.         -i<n> Control information type  . . . . . . . . . . . . . . . . . . 8
  86.         -2    Set display of times to 24 hour clock . . . . . . . . . . . . 8
  87.  
  88.  
  89.    The UNCRUSH Program: . . . . . . . . . . . . . . . . . . . . . . . . . . 9
  90.  
  91.         -v    Display without uncompressing . . . . . . . . . . . . . . . .10
  92.         -V    Display archive comment only  . . . . . . . . . . . . . . . .10
  93.         -o    Overwrite files without query . . . . . . . . . . . . . . . .10
  94.         -u    Uncompress NEWER or NEW files . . . . . . . . . . . . . . . .10
  95.         -a    Uncompress NEW files  . . . . . . . . . . . . . . . . . . . .10
  96.         -i    Ignore paths in CRUSH file  . . . . . . . . . . . . . . . . .10
  97.         -I    Only ignore drives in paths . . . . . . . . . . . . . . . . .10
  98.         -q    Quiet mode: No output at all  . . . . . . . . . . . . . . . .11
  99.         -z    Only suppress output of archiver  . . . . . . . . . . . . . .11
  100.         -e    Extract even if not CRUSH archive . . . . . . . . . . . . . .11
  101.         -l    Only display a simple file list . . . . . . . . . . . . . . .11
  102.         -2    Display times as 24-hour clock  . . . . . . . . . . . . . . .11
  103.  
  104.    Worked Examples: . . . . . . . . . . . . . . . . . . . . . . . . . . . .12
  105.  
  106.    The UNDO and UNDO2 Programs: . . . . . . . . . . . . . . . . . . . . . .13
  107.  
  108.    Configuration: . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14
  109.  
  110.    Technical Details: . . . . . . . . . . . . . . . . . . . . . . . . . . .15
  111.  
  112.  
  113.    _________________________________________________________________________
  114.    Getting Started                                                   Page  1
  115.  
  116.    ____________________________________
  117.    Installation
  118.  
  119.    CRUSH installation is very simple. The user need only copy the contents of
  120.    the  release disk to the desired directory. A file INSTALL.BAT is provided
  121.    to  do  this for you. Your  chosen directory should be within your  search
  122.    path (See the PATH variable in your DOS documentation).
  123.  
  124.    In  order  to be able to  use  CRUSH, you must have one of  the  archivers
  125.    PKZIP, ARJ, LHA, ZOO, HA and UC.
  126.  
  127.    ____________________________________
  128.    What is CRUSH?
  129.  
  130.    CRUSH  is a command-line tool that uses your existing archiver PKZIP, ARJ,
  131.    LHA,  ZOO, HA or UC to generate smaller archives than it could alone. With
  132.    many  applications  this improvement  may  be less than 5%,  but  dramatic
  133.    improvements  of  10%-70%  are  much  more typical. A block  test  of  128
  134.    archives  totalling 2349 wordprocessing files (see README) averaged a  47%
  135.    improvement  (100k ZIP reduced to 53k CRUSH!). CRUSH is ideally suited  to
  136.    users  who regularly archive material or who just need to save disk space.
  137.    There  is  no other compression tool  for DOS (as of June 1994)  that  can
  138.    match the compression performance of CRUSH, and most do not come close.
  139.  
  140.    ____________________________________
  141.    CRUSH and other Archivers
  142.  
  143.    CRUSH is used from the command-line in much the same way as archivers such
  144.    as  PKZIP and ARJ. If you are already familiar with these, then you should
  145.    be  able to adapt to CRUSH with very little difficulty. If you are a  ZOO,
  146.    LHA  or  HA user, then you  will observe some changes, but will  find  the
  147.    basic operation of CRUSH very similar.
  148.  
  149.    ____________________________________
  150.    Simple use of CRUSH
  151.  
  152.    To  create a CRUSH archive called  BACKUP containing all the files in  the
  153.    current directory requires the following simple command:
  154.  
  155.         CRUSH BACKUP
  156.  
  157.    This  will create the file BACKUP.ZIP (PKZIP must be available). The  user
  158.    can be more selective by adding filespecs, as follows:
  159.  
  160.         CRUSH BACKUP *.DOC README MAN*.*
  161.  
  162.    This  will only save files with the specified filespecs. The user may also
  163.    want  to  receive some feedback about  how much space is being saved.  The
  164.    "-c" (compare) option will allow a comparison to be made:
  165.  
  166.         CRUSH -c BACKUP *.DOC README MAN*.*
  167.  
  168.    Once  created, a CRUSH archive  can be uncompressed using UNCRUSH in  much
  169.    the  same  way as PKUNZIP  is used. e.g.  UNCRUSH BACKUP *.DOC. This  only
  170.    extracts  files  matching *.DOC. The  user is advised to read the  "Worked
  171.    Examples"  section  for more details  of CRUSH usage, and also the  README
  172.    file.  Simply type "CRUSH" to obtain on-line help.
  173.  
  174.  
  175.    _________________________________________________________________________
  176.    The CRUSH program                                                 Page  2
  177.  
  178.  
  179.    This  is the program that will replace the use of PKZIP, LHA, ARJ, ZOO, HA
  180.    and UC. Whichever of these you already use will still be needed, but CRUSH
  181.    will  run it for you. The command-line syntax of CRUSH is, for most cases,
  182.    identical to PKZIP usage. CRUSH preserves dates, times and attributes.
  183.  
  184.    USAGE:    CRUSH [opts] archive [pathspecs] [@lists] [>outfile]
  185.  
  186.    Where:
  187.  
  188.    [opts]         These  are options that control CRUSH's behaviour. e.g.  -r
  189.                   causes CRUSH to search subdirectories. These can be grouped
  190.                   together for brevity or specified one-by-one, e.g.
  191.  
  192.                   -rca      is equivalent to:      -r -c -a
  193.  
  194.                   The  user  can  choose  to  use  "/" in place  of  "-"  for
  195.                   preference. e.g. -r and /r are equivalent.
  196.  
  197.    archive        This  is the name of the archive to be created e.g.  BACKUP
  198.                   or  BACKUP.001 etc. If no extension is specified, then  the
  199.                   default  extension  for the  archiver used will be  adopted
  200.                   (default  PKZIP). If the  special name "[]" is given  (e.g.
  201.                   CRUSH []),  then CRUSH will generate a unique archive  name
  202.                   based  on the current date and time (assuming that archives
  203.                   are not created within 2 seconds of each other).
  204.  
  205.    [pathspecs]    These  are  the files  to be compressed (defaulting to  all
  206.                   files in the current directory). e.g.
  207.  
  208.                        CRUSH SAVE \WP\*.DOC *.TXT
  209.  
  210.                   This  will compress into SAVE.ZIP all files matching  *.DOC
  211.                   from  the directory \WP  and all files matching *.TXT  from
  212.                   the current directory. The path \WP\ will also be stored in
  213.                   the  archive,  to  be  re-created by UNCRUSH.  UNCRUSH  can
  214.                   optionally ignore stored pathnames.
  215.  
  216.                   CRUSH  uses proper rather than DOS wildcards. e.g. the  DOS
  217.                   wildcard  *FRED.*  will  match  a file called  JOE  because
  218.                   *FRED.*  and  *.* are  treated by DOS as equivalent.  CRUSH
  219.                   interprets  "*"  as  any sequence of characters,  including
  220.                   zero length.  See also the "-x" EXCLUSION filespecs.
  221.  
  222.    [@lists]       CRUSH  will accept response files containing lists of files
  223.                   to be processed. These should contain one pathspec per line
  224.                   and can contain comments starting with ";" e.g.
  225.  
  226.                        *.EXE
  227.                        \WP\*.DOC ; save my docs
  228.                        ; Fred's stuff here onwards
  229.                        \BIN\*.EXE
  230.  
  231.                   Unlike PKZIP, the response file can be of any length (PKZIP
  232.                   limits the user to 500 filespecs).
  233.  
  234.    [>outfile]     CRUSH  can  generate a  response file by  re-directing  the
  235.                   output to a file for later use e.g. CRUSH DOCS >SAVE
  236.  
  237.  
  238.    __________________________________________________________________________
  239.    CRUSH Options                                                      Page  3
  240.  
  241.  
  242.    CRUSH  will  default  to  using  PKZIP  unless  -j, -o, -l, -h  or  -u  is
  243.    specified.  PKZIP is the world's best known archiver, written by Paul Katz
  244.    and  marketed as Shareware by PKWARE. CRUSH will work with any version  of
  245.    PKZIP,  but  the user is recommended  to use PKZIP v2.04 or  later,  which
  246.    achieves significantly better compression than v1.x.
  247.  
  248.    ____________________________________
  249.    -j    Use ARJ
  250.  
  251.         This  instructs CRUSH to use Robert K Jung's "ARJ" program instead of
  252.         PKZIP.  This  can be specified  as a general default using the  CRUSH
  253.         environment variable e.g. SET CRUSH=-j
  254.  
  255.         Example:
  256.  
  257.              CRUSH BACKUP        Use PKZIP
  258.  
  259.              CRUSH -j BACKUP     Use ARJ
  260.  
  261.    ____________________________________
  262.    -o    Use ZOO
  263.  
  264.         This will use the ZOO program, creating ZOO files.
  265.  
  266.    ____________________________________
  267.    -l    Use LHA
  268.  
  269.         This will use Haruyasu Yoshizaki's "LHA" program, creating LZH files.
  270.  
  271.    ____________________________________
  272.    -h    Use HA
  273.  
  274.         This  will  use Harri Hirvola's  "HA" program, creating HA files.  HA
  275.         produces very small archives, but is quite slow.
  276.  
  277.    ____________________________________
  278.    -u    Use UC2
  279.  
  280.         This  uses Ad Infinitum Programs's "UC" program. This uses a great of
  281.         DOS  memory  and will probably  require the added program  US.EXE  to
  282.         allow CRUSH access to the 80k it needs. e.g. US CRUSH -u SAVE
  283.  
  284.    ____________________________________
  285.    -m    Moves file to archive
  286.  
  287.         This will delete the original files after they have been successfully
  288.         compressed.
  289.  
  290.    ____________________________________
  291.    -c    Compare with and without CRUSH
  292.  
  293.         This  allows CRUSH to show how much filespace has been saved over the
  294.         archiver  alone.  This  will  make  CRUSH  slower  as  an  additional
  295.         compression  is  needed in order  to make a comparison (unless -e  is
  296.         also  used).  The  results  are  displayed as a bar  graph,  plotting
  297.         archive  and CRUSH sizes. The original file size can also be  plotted
  298.         by adding the option -i2.
  299.  
  300.    __________________________________________________________________________
  301.    CRUSH Options                                                      Page  4
  302.  
  303.    ____________________________________
  304.    -f    Optimise until 5 failed attempts to improve compression
  305.  
  306.         This  will make CRUSH experiment with different orderings to  improve
  307.         the compression. CRUSH will end when it has failed 5 times to find an
  308.         improvement.  This will increase the run time of CRUSH by at least  5
  309.         times.   Each  time  it  provides  an  improvement,  the  time  taken
  310.         increases.  CRUSH is unlikely to  take more than 15 times the  normal
  311.         compress time.
  312.  
  313.         The  results of this trial  are displayed as two bar graphs,  showing
  314.         the size of the first and best CRUSH compression. (See option "-s").
  315.  
  316.    ____________________________________
  317.    -f<n> Optimise until "n" failed attempts to improve compression
  318.  
  319.         As  "-f",  but  allowing the  user  to specify how long CRUSH  is  to
  320.         continue the trial before giving up e.g.
  321.  
  322.              CRUSH -f2 BACKUP         will give up after only 2 failures.
  323.  
  324.              CRUSH -f100 BACKUP       will give up after 100 failures.
  325.  
  326.    ____________________________________
  327.    -t    Only create CRUSH archive if 5% improvement
  328.  
  329.         This  creates a CRUSH archive only if it can improve the archive size
  330.         by 5%, otherwise it creates a conventional archive. It invokes the -c
  331.         option,  which adds to the run time, as it needs to run the  archiver
  332.         without CRUSH for comparison.
  333.  
  334.    ____________________________________
  335.    -t<n> Only create CRUSH archive if "n"% improvement
  336.  
  337.         As "-t", but allowing the user to set the threshold e.g.
  338.  
  339.              CRUSH -t10 BACKUP        CRUSH only if 10% better
  340.  
  341.    ____________________________________
  342.    -r    Recurse subdirectories
  343.  
  344.         This  will search subdirectories from the specified directories, also
  345.         storing paths in the archive. Unlike PKZIP, CRUSH defaults to storing
  346.         pathnames  with the files. However  this is done in a very  efficient
  347.         manner and so does not significantly increase the archive size (PKZIP
  348.         uses  a space-consuming format for this e.g. searching a subdirectory
  349.         DOCUMENT\MYDOCS  with  100 files  would require an extra 1660  bytes,
  350.         whereas CRUSH would require just 16). Example:
  351.  
  352.              CRUSH -r BACKUP \WP\DOCS\*.WP *.TXT
  353.  
  354.         This will search \WP\DOCS and all its subdirectories for the filespec
  355.         *.WP,  and  the current  directory and its subdirectories for  *.TXT.
  356.         CRUSH will store the full path e.g. \WP\DOCS\HOME\DOC.WP etc.
  357.  
  358.         See  also the CRUSH option "-n" and UNCRUSH options "-i" and "-I" for
  359.         ignoring paths and drives.
  360.  
  361.  
  362.    __________________________________________________________________________
  363.    CRUSH Options                                                      Page  5
  364.  
  365.    ____________________________________
  366.    -:    Set range(s) of dates
  367.  
  368.         DATE  OPTIONS.  These  are  used  to specify a date  range  for  file
  369.         matching.  If  a  single  date  is specified then this  will  be  the
  370.         earliest  date  to be included.  If a second date is specified,  then
  371.         this  is  taken  as  the  as  the  end date. Dates can  be  mixed  in
  372.         "absolute" and "relative" format. The full syntax is:
  373.  
  374.                  [!]:[=]<date>
  375.  
  376.          Where:  !   inverts  the  meaning  of  the  range set.  e.g.  "range
  377.                      1st-2nd" becomes "outside 1st-2nd"
  378.  
  379.                  =   sets both the start and end date to the date following.
  380.  
  381.          and <date> can be:
  382.                                                                 Example:
  383.            DD/MM/YY  absolute UK date                           21/2/94
  384.            MM/DD/YY  absolute US date (CRUSH determines which)  2/21/94
  385.            YY/MM/DD  absolute JAPAN date ( " )                  94/2/21
  386.            DDMonYY   absolute date in alternative format        21feb94
  387.            DDMon     absolute date (current year)               21feb
  388.            -DD       number of days before current date, OR     -3
  389.            m-MM      number of months OR                        m-2
  390.            y-YY      number of years (truncates to 83 years)    y-1
  391.            .name     where date is taken from file/dir "name"   .LASTBAC
  392.  
  393.         The  four  date  formats  can be mixed, e.g.  -:y-2:-5  (or /:y-2:-5)
  394.         specifies  files  created/modified between  2 years and 5  days  ago.
  395.         -:y-99:5jan  will  select  all  files  created on or  before  5th Jan
  396.         (current  year).  -!:=-1 selects  all files except  yesterday's.  The
  397.         ".name"  option allows compression of files relative to the date  and
  398.         time of an existing file. The latter feature allows the user to issue
  399.         commands  such  as "compress  all files modified/created  since  last
  400.         backup", using commands such as:
  401.  
  402.              CRUSH -:.BACKTAG BACKUP
  403.              REM>BACKTAG
  404.  
  405.         The  REM>BACKTAG will create an empty file with the current date  and
  406.         time,  so that the next backup  will start with the date and time  of
  407.         that file.
  408.  
  409.         General Examples: (all use the archive name "BACK")
  410.  
  411.         CRUSH -:11feb BACK       Compressing  files  modified/created  on  or
  412.                                  after February 11th of this year.
  413.  
  414.         CRUSH -:-3 BACK          Files modified/created today or during the 3
  415.                                  previous days.
  416.  
  417.         CRUSH -:-0 BACK          As above, but today only.
  418.  
  419.         CRUSH -!:y-3 BACK        Not files created during the last 3 years.
  420.  
  421.         CRUSH -:m-4:m-3 BACK     Will compress files modified/created between
  422.                                  4 and 3 months ago.
  423.  
  424.    __________________________________________________________________________
  425.    CRUSH Options                                                      Page  6
  426.  
  427.    ____________________________________
  428.    -x    Exclude pathspecs
  429.  
  430.         In programs such as PKZIP and ARJ, the exclusion pathspecs can appear
  431.         in  any  position in the  command-line. With CRUSH they  MUST  appear
  432.         AFTER  the  archive name with  the other pathspecs. CRUSH limits  the
  433.         user to 300 exclusion filespecs.
  434.  
  435.         Examples: (pathspecs are all case-insensitive)
  436.  
  437.         CRUSH BACKUP *.EXE -xTEST*.* *.COM
  438.  
  439.         This  will compress all files matching *.EXE and *.COM, but not those
  440.         matching TEST*.*. The order of these filespecs is irrelevant.
  441.  
  442.         CRUSH -r BACKUP -xDOC\*.BAK -x*.TMP
  443.  
  444.         This  will  recurse, searching  for files to compress, but  excluding
  445.         files  that match the path and  name DOC\*.BAK, or the name *.TMP  in
  446.         any subdirectory.
  447.  
  448.         CRUSH -r BACKUP -x@NOTTHIS -x@ORTHIS
  449.  
  450.         This  will recurse, searching for file to compress, but excluding any
  451.         pathspecs in the response files NOTTHIS or ORTHIS.
  452.  
  453.    ____________________________________
  454.    -y    Answer YES to all questions
  455.  
  456.         This  will allow CRUSH to compress without pausing for queries,  such
  457.         as permission to overwrite an existing file.
  458.  
  459.    ____________________________________
  460.    -z    Add CRUSH archive comment
  461.  
  462.         This  will prompt the user for an archive comment to add to the CRUSH
  463.         file.  Ths will be displayed by UNCRUSH when uncrushing or  verifying
  464.         an archive.
  465.  
  466.         The  user  can  automatically  provide  a CRUSH comment  without  the
  467.         program pausing for input by using the DOS echo command. e.g.
  468.  
  469.              ECHO My Comment|CRUSH -z BACKUP
  470.  
  471.         which will give the archive the comment "My Comment".
  472.  
  473.    ____________________________________
  474.    -v    Show files for adding without CRUSHing
  475.  
  476.         This  will  show which  files CRUSH would compress  without  actually
  477.         compressing,  with a summary at the end. If the output is re-directed
  478.         to a file, then the re-directed file will hold a simple list of files
  479.         (equivalent to PKZIP option "-@") e.g.
  480.  
  481.              CRUSH -v BACK > LIST          Creating  a list of matching files
  482.                                            that would be archived.
  483.  
  484.         The archive name specified will be ignored.
  485.  
  486.    __________________________________________________________________________
  487.    CRUSH Options                                                      Page  7
  488.  
  489.    ____________________________________
  490.    -n    Store files without paths
  491.  
  492.         This allows the user to prevent pathnames from being stored e.g.
  493.  
  494.              CRUSH -n BACKUP MYDOC\*.DOC
  495.  
  496.         would store files matching *.DOC, but without the path MYDOC\.
  497.  
  498.    ____________________________________
  499.    -Q    Query each file to be archived
  500.  
  501.         This allows the user to choose on-line which files are to be included
  502.         in the archive e.g.
  503.  
  504.              CRUSH -Qr DOC *.WP
  505.  
  506.         will  search recursively (-r) for  all files matching *.WP and  query
  507.         whether  each is to be added to the archive. The user has the  option
  508.         to accept or reject all the remaining files at any point, or to abort
  509.         the  compression.  This option provides  an easy way to  construct  a
  510.         response file, e.g. the following expanded example:
  511.  
  512.              CRUSH -Qr DOC *.WP *.TXT > SAVE
  513.  
  514.         would  allow  the user  to  select files for compression  while  also
  515.         creating a response file SAVE for future use, e.g. CRUSH DOC @SAVE.
  516.  
  517.    ____________________________________
  518.    -q    QUIET mode, no output
  519.  
  520.         This will run CRUSH without any display output, unless CRUSH needs to
  521.         prompt the user with a question (inhibited by -y). This is useful for
  522.         instances  where  CRUSH is called  within BAT scripts or from  within
  523.         another program.
  524.  
  525.    ____________________________________
  526.    -a    Create an additional index
  527.  
  528.         The price paid for creating CRUSH archives is that, although programs
  529.         such  as PocketD Plus can still browse the contents of the  archives,
  530.         searching for files inside CRUSH archives would be prohibitively slow
  531.         if  each  CRUSH  archive  had to be temporarily  decompressed  whilst
  532.         scanning.  The  -a option will  force CRUSH to create  an  additional
  533.         external  index with the extension ".CRI". PocketD Plus will use this
  534.         for  searching (and also browsing)  to allow files to be searched  or
  535.         selected  very quickly. This will  obviously have an associated  disk
  536.         space overhead, but this would not be significant on disks with small
  537.         cluster  sizes (e.g. floppies), or where the CRUSH saving is  already
  538.         substantial (i.e. more than 10%)
  539.  
  540.    ____________________________________
  541.    -e    Use the existing archive for comparison
  542.  
  543.         This  will allow the user to test the compression improvement without
  544.         re-creating  the  original archive  for comparison. CRUSH will  still
  545.         need  the files for compression to be available in uncompressed form.
  546.         The  option  -c must also be  used. Make sure that the archive to  be
  547.         compared is not already a CRUSH archive!
  548.  
  549.  
  550.    __________________________________________________________________________
  551.    CRUSH Options                                                      Page  8
  552.  
  553.    ____________________________________
  554.    -C    Colour off
  555.  
  556.         This will use whatever colour is currently in use rather than forcing
  557.         white on blue. This normally means white on black.
  558.  
  559.    ____________________________________
  560.    -C<n> Set colour
  561.  
  562.         This  will  allow the user to  override the colour of the  bar  graph
  563.         displayed  during compression. "n" is the normal colour attribute  in
  564.         the range 0 to 7.
  565.    ____________________________________
  566.    -s    Minimise temporary disk space (slow!)
  567.  
  568.         CRUSH  will  normally use about  25% extra temporary disk space  when
  569.         running  with the -f optimise  option. If you do not have  sufficient
  570.         space  to run CRUSH with this option, then "-s" will reduce the space
  571.         CRUSH uses, but at the cost of a longer compression time. This option
  572.         is  not  recommended for routine  use unless you are normally  always
  573.         short  of disk space. CRUSH does not make use of extended or expanded
  574.         memory.
  575.    ____________________________________
  576.    -i<n>  Control information type
  577.  
  578.         By default, CRUSH will display a bar graph.
  579.  
  580.         If -i1  is  specified,  a  more  comprehensive table  will  be  shown
  581.         instead, giving more information.
  582.  
  583.         If -i2  is specified, CRUSH will still show a bar graph, but when  -c
  584.         is  selected it will simultaneously plot the file size, archive  size
  585.         and  CRUSH size, rather than just archive and CRUSH. This will  allow
  586.         all  three sizes to be compared, but will give limited resolution  of
  587.         the difference between just the archive and CRUSH.
  588.  
  589.         Note: CRUSH plots to a resolution of 1 in 114 (using the special half
  590.         width character "221")
  591.  
  592.    ____________________________________
  593.    -2    Set display of times to 24 hour clock
  594.  
  595.         This will force the display of 24 hour clock times instead of 12 hour
  596.         during browsing.
  597.  
  598.  
  599.    __________________________________________________________________________
  600.    The UNCRUSH Program                                                Page  9
  601.  
  602.  
  603.    The  UNCRUSH program is used for uncompressing or viewing CRUSH  archives.
  604.    It requires access to the corresponding uncompressing programs used by the
  605.    base  archiver e.g. PKUNZIP for PKZIP files and ARJ for ARJ files.  Unlike
  606.    CRUSH,  UNCRUSH is copyrighted FREEWARE. You may use and distribute freely
  607.    providing  that  its intended  use  is not mis-represented and it  is  not
  608.    modified in any way.
  609.  
  610.    USAGE:    UNCRUSH [opts] archive [destination] [pathspecs] [>outfile]
  611.  
  612.    Where:
  613.  
  614.    [opts]         These are options that control UNCRUSH's behaviour. e.g. -v
  615.                   causes  CRUSH to display the names of the compressed  files
  616.                   without  uncompressing them. These can be grouped  together
  617.                   for brevity or specified one-by-one, e.g.
  618.  
  619.                   -ioq      is equivalent to:      -i -o -q
  620.  
  621.                   The  user  can  choose  to  use  "/" in place  of  "-"  for
  622.                   preference e.g. -i and /i are equivalent.
  623.  
  624.    archive        This  is  the name of  the archive to be uncompressed  e.g.
  625.                   BACKUP  or  BACKUP.001 etc.  If no extension is  specified,
  626.                   then  UNCRUSH will look  for known extensions that use  the
  627.                   specified  name in the order CRU, CRI, ZIP, ARJ, LZH,  ZOO,
  628.                   HA   then  UC2.  UNCRUSH  cannot  uncompress   files   with
  629.                   non-standard  extensions.  Such  files  will  need  to   be
  630.                   re-named  before using UNCRUSH, or uncompressed first using
  631.                   PKUNZIP etc.
  632.  
  633.    [destination]  This  is  the  destination  path  where  files  are  to  be
  634.                   uncompressed.  This  must be  terminated by ":" or  "\"  to
  635.                   allow  it to be  distinguished from normal pathspecs  (same
  636.                   operation  as  PKUNZIP). Paths  within the archive will  be
  637.                   combined with any specified destination path, e.g.
  638.  
  639.                        CRUSH BACKUP \WP\*.DOC            followed by:
  640.  
  641.                        UNCRUSH BACKUP MYDOC\HOME\
  642.  
  643.                   will uncompress to MYDOC\HOME\WP\*.DOC
  644.  
  645.    [pathspecs]    These  are the files to be uncompressed (defaulting to  all
  646.                   files). These can include paths e.g.
  647.  
  648.                        UNCRUSH SAVE \WP\*.DOC *.TXT
  649.  
  650.                   This will uncompress pathspecs from SAVE matching \WP\*.DOC
  651.                   and  any pathspecs with the filespec *.TXT. i.e. *.TXT will
  652.                   match  *.TXT and \WP\*.TXT,  but \WP\*.DOC would not  match
  653.                   *.DOC.  UNCRUSH  can  be  set to optionally  ignore  stored
  654.                   pathnames. As  with CRUSH, UNCRUSH uses proper rather  than
  655.                   DOS wildcards (See CRUSH for details).
  656.  
  657.    [>outfile]     UNCRUSH  will allow the user to create response or  summary
  658.                   files using re-directed output. See -v, -V and -l.
  659.  
  660.  
  661.    __________________________________________________________________________
  662.    UNCRUSH Options:                                                   Page 10
  663.  
  664.    ____________________________________
  665.    -v    Display without uncompressing
  666.  
  667.         This  will cause UNCRUSH to  report the pathspecs inside the  archive
  668.         without  uncompressing.  This gives  a sorted output reporting  size,
  669.         date  and time of the file stored. Attributes are not displayed, even
  670.         though stored.
  671.  
  672.    ____________________________________
  673.    -V    Display archive comment only
  674.  
  675.         This  will  simply display the  archive comment and the name  of  the
  676.         archive.  This  is  useful  for  cataloging purposes,  allowing  this
  677.         information to be appended to a reference file e.g.
  678.  
  679.              UNCRUSH -V FRED >> REFFILE
  680.  
  681.    ____________________________________
  682.    -o    Overwrite files without query
  683.  
  684.         This  will force UNCRUSH to overwrite files regardless of whether the
  685.         file  already exists. UNCRUSH would normally inform the user if files
  686.         already  exist with an option to skip or overwrite the file.  UNCRUSH
  687.         helpfully also informs the user whether the file to be overwritten is
  688.         NEWER, OLDER, IDENTICAL or SAME DATE, DIFFERENT SIZE.
  689.  
  690.    ____________________________________
  691.    -u    Uncompress NEWER or NEW files
  692.  
  693.         This will only uncompress NEW or NEWER files from within the archive.
  694.         This will still prompt for overwrites, unless -o is also specified.
  695.  
  696.    ____________________________________
  697.    -a    Uncompress NEW files
  698.  
  699.         This will only uncompress NEW files.
  700.  
  701.    ____________________________________
  702.    -i    Ignore paths in CRUSH file
  703.  
  704.         This  will  ignore all  paths inside the archive, therefore  possibly
  705.         generating  an  overwrite  warning if WP\FRED.DOC and  \DOC2\FRED.DOC
  706.         exist in the same CRUSH file.
  707.    ____________________________________
  708.    -I    Only ignore drives in paths
  709.  
  710.         As "-i", but only ignoring drive names stored in the CRUSH file. This
  711.         accommodates situations where a CRUSH command such as:
  712.  
  713.              CRUSH BACKUP S:\WP\*.DOC
  714.  
  715.         is  run,  storing a network drive  letter with the path. A user on  a
  716.         non-networked  PC would then be  unable to uncompress the CRUSH  file
  717.         without losing the path. The -I option allows this to be overridden.
  718.  
  719.  
  720.  
  721.    __________________________________________________________________________
  722.    UNCRUSH Options                                                    Page 11
  723.  
  724.    ____________________________________
  725.    -q    Quiet mode: No output at all
  726.  
  727.         This  will  inhibit  all  output from UNCRUSH, except  where  UNCRUSH
  728.         queries an overwrite.
  729.  
  730.    ____________________________________
  731.    -z    Only suppress output of archiver
  732.  
  733.         This  will only suppress the output of the unarchiver run by UNCRUSH.
  734.         e.g.  UNCRUSH  may call  PKUNZIP which normally displays  information
  735.         while  uncompressing.  This option  will inhibit this. This  may  not
  736.         always  be  safe if the  unarchiver has an unusual problem, in  which
  737.         case the error message the archiver displays will not be visible.
  738.  
  739.    ____________________________________
  740.    -e    Extract even if not CRUSH archive
  741.  
  742.         This  is convenient if the user  wants to use UNCRUSH to process  any
  743.         archives,  whether  CRUSH  or  not. This will support  any  pathspecs
  744.         given, but will not support specified destination directories.
  745.  
  746.    ____________________________________
  747.    -l    Only display a simple file list
  748.  
  749.         This  will replace the normal display  by a simple list of files  and
  750.         pathnames.  This is most usefully used with -v to generate a response
  751.         file.
  752.  
  753.    ____________________________________
  754.    -2    Display times as 24-hour clock
  755.  
  756.         This  is only a cosmetic detail, but many users are firmly  committed
  757.         to 12 or 24 hour clocks, in which case UNCRUSH will allow the default
  758.         12 hour clock file times to be replaced by a 24 hour clock times.
  759.  
  760.  
  761.    __________________________________________________________________________
  762.    Worked Examples                                                    Page 12
  763.  
  764.  
  765.    There  are many routine archiving tasks that CRUSH could be used for.  The
  766.    following  selects  a few that  either take particular advantage of  CRUSH
  767.    facilities,  or that may be particularly relevant when first using  CRUSH.
  768.    For simple examples see "Getting Started" at the beginning of this manual.
  769.  
  770.    ____________________________________
  771.    Generating a Response File for Future Backups
  772.  
  773.    Most archivers allow the user to use a "response" file containing file and
  774.    path  specifications  to  be  used  in addition to (or instead  of)  CRUSH
  775.    command-line  parameters.  This is convenient  when a list is very  large.
  776.    CRUSH  allows the user to choose files for archiving on-line using the  -Q
  777.    option. e.g.
  778.  
  779.         CRUSH -rQv TEST *.C *.ASM >RESPLIST
  780.  
  781.    This  will search all subdirectories (-r), querying each file found  (-Q),
  782.    but  without actually creating an archive (-v). The output is directed  to
  783.    the  file RESPLIST. The user can then use this for future CRUSH  archiving
  784.    in a command of the form:
  785.  
  786.         CRUSH BACKUP @RESPLIST
  787.  
  788.  
  789.    ____________________________________
  790.    Performing Archival Backups
  791.  
  792.    CRUSH's  option  to  backup files  dated  on or after a  named  file  (not
  793.    supported  by PKZIP etc.) makes it possible to create backups of all files
  794.    modified  since  the previous backup.  This can be combined  with  CRUSH's
  795.    ability to automatically generate a unique filename, as follows:
  796.  
  797.    BACK.BAT containing:
  798.  
  799.         CRUSH -r:.LASTBAC [] *.DOC *.C *.H
  800.         IF ERRORLEVEL 1 ECHO Error occurred!
  801.         IF ERRORLEVEL 1 GOTO EXIT
  802.         REM>LASTBAC
  803.         :EXIT
  804.  
  805.    The  "[]"  parameter replaces  the  normal archive name by a  unique  name
  806.    generated  using the current date and time (e.g. 1CD29E33.ZIP, which  uses
  807.    the  hexadecimal value of the  combined 32-bit date and time). CRUSH  will
  808.    then  search  all subdirectories for  all files matching *.DOC *.C or  *.H
  809.    modified  since the date and time of the file LASTBAC and add them to  the
  810.    archive. If the archive step fails (e.g. out of memory etc.), the error is
  811.    reported and the command sequence ended. If successful, then "REM>LASTBAC"
  812.    will  create an empty file with the current date and time for reference by
  813.    the next backup.
  814.  
  815.    On  the  next occasion that  the  command "BACK" is run, CRUSH  will  only
  816.    search for files modified since the last backup.
  817.  
  818.  
  819.    __________________________________________________________________________
  820.    Worked Examples                                                    Page 13
  821.  
  822.  
  823.    ____________________________________
  824.    Converting all Existing Archives to CRUSH
  825.  
  826.    This  would  be a potentially  mammoth task that would benefit  from  some
  827.    automation, unless you are willing to convert each file one-by-one. A good
  828.    choice for this task would be PocketD Plus v4.1 (D.EXE), as follows:
  829.  
  830.         MD TMP
  831.         CD TMP
  832.         D .ZIP/W[PKUNZIP -d $w//CRUSH -ert $w//PAUSE//D /zd]Rq
  833.  
  834.    This  example  converts ZIP  files  by running a command sequence  of  the
  835.    following type for each archive found:
  836.  
  837.         PKUNZIP -d \C\BATS.ZIP       Uncompress with subdirectories into TMP.
  838.         CRUSH -ert \C\BATS.ZIP       (See below).
  839.         PAUSE                        Allow inspection of result.
  840.         D /zd                        Delete uncompressed files/dirs from TMP.
  841.  
  842.    The CRUSH command compares the new CRUSH archive with the existing archive
  843.    (-e),  but  will  not replace  it  unless the new archive is at  least  5%
  844.    smaller  (-t). The files originally compressed may also include paths, and
  845.    so  CRUSH uses -r to search all uncompressed subdirectories created by the
  846.    "PKUNZIP -d"  command.  For those  with a cautious disposition, the  D.EXE
  847.    command-line  includes  the "q" option,  allowing the user to  confirm  or
  848.    select  each archive to be processed. The PAUSE command allows the user to
  849.    examine  the output of CRUSH before the command "D /zd" deletes the  files
  850.    and subdirectories temporarily uncompressed.
  851.  
  852.  
  853.    ____________________________________
  854.    The UNDO and UNDO2 Programs
  855.  
  856.    The  registered version of  CRUSH.EXE comes with two additional  programs,
  857.    UNDO.EXE and UNDO2.EXE, which provide tiny alternatives to UNCRUSH.EXE for
  858.    unpacking an uncompressed CRUSH archive.
  859.  
  860.    USAGE:    UNDO crushname
  861.              UNDO2 crushname
  862.  
  863.  
  864.    UNDO.EXE  is 3.8k and ignores any path information. UNDO2.EXE is 4.3k  and
  865.    will  also  re-construct embedded  paths. These programs can  be  included
  866.    within  distribution  archives  that  hold CRUSH archives,  providing  the
  867.    smallest  package that will allow UNCRUSHing without additional  programs.
  868.    Ideally  UNDO.EXE  and  a  CRU  archive could be embedded  inside  an  SFX
  869.    archive, e.g. using LHA:
  870.  
  871.         CRUSH -l DEMO ! *.DOC
  872.         LHA A DEMO UNDO.EXE
  873.         LHA S DEMO
  874.  
  875.    The "!" parameter above is the file "!" which contains a message displayed
  876.    when  the  archive DEMO.EXE is  run.  This can contain details of  how  to
  877.    uncompress  the  CRUSH archive, e.g.  "Unpack the CRUSH archive by  typing
  878.    UNDO DEMO.CRU after the DEMO.EXE executable has finished decompression."
  879.  
  880.    The  user  may  choose  to  rename  UNDO2.EXE to UNDO.EXE  or  some  other
  881.    convenient  name.  Note  that  distribution of CRUSH archives  requires  a
  882.    distribution licence (see REGISTER.DOC).
  883.  
  884.  
  885.    __________________________________________________________________________
  886.    Configuration                                                      Page 14
  887.  
  888.  
  889.    __________________________________
  890.    Configuration of CRUSH and UNCRUSH
  891.  
  892.    CRUSH  and  UNCRUSH  can  be  configured using environment  variables,  as
  893.    follows:
  894.  
  895.    The CRUSH variable:
  896.  
  897.         This  is particularly important if you decide not to use the  default
  898.         PKZIP used by CRUSH e.g.
  899.  
  900.              SET CRUSH=-j
  901.  
  902.         will force CRUSH to always use ARJ by default. Other options can also
  903.         be added e.g.
  904.  
  905.              SET CRUSH=-jCc
  906.  
  907.         will  also  force  the  normal  display  colour and  always  force  a
  908.         comparison between ARJ and CRUSH when creating a CRUSH file.
  909.  
  910.  
  911.    The UNCRUSH variable:
  912.  
  913.         This is less critical, but an example usage might be:
  914.  
  915.              SET UNCRUSH=-2e
  916.  
  917.         which  would use the 24 hour clock and also allow UNCRUSH to be  used
  918.         for uncompressing ordinary PKZIP, ARJ, LHA, ZOO, HA and UC archives.
  919.  
  920.  
  921.    Environment  variables should be set in your AUTOEXEC.BAT, otherwise  they
  922.    will be lost next time the system is re-booted.
  923.  
  924.    __________________________________________________________________________
  925.    Technical Details                                                  Page 15
  926.  
  927.  
  928.    This  information is only of interest to 3rd party developers who may want
  929.    to provide support for CRUSH archives.
  930.  
  931.    __________________________________
  932.    Structure of CRUSH file (.CRU)
  933.  
  934.    Address Length in Bytes   Description
  935.  
  936.    000000  14               CRUSH v1.3
  937.    00000E  2                Chksum
  938.    000010  2                Number of paths (only 0-255 supported)
  939.    000012  2                Number of files
  940.    000014  2                Reserved
  941.    000016  4                Totalsize of files + header length(26)
  942.    00001A  "totalsize"      Data
  943.  
  944.    ; directory held at offset "Totalsize of files + header length(26)"
  945.    000000  1                Path number
  946.    000001  1                Attribute
  947.    000002  2                Time
  948.    000004  2                Date
  949.    000006  4                Size
  950.    00000A  13               Name
  951.    000017  1                Reserved
  952.    (above repeated "Number of files" times)
  953.  
  954.    ; "n" Paths
  955.    path1                    Each terminated by NULL
  956.    path2
  957.    ..
  958.  
  959.    ; Archive comment
  960.    comment                  Terminated by NULL
  961.  
  962.    __________________________________
  963.    Structure of CRUSH fast Index (.CRI)
  964.  
  965.    As CRU but with Totalsize field set to 0 + Headerlen(26)
  966.  
  967.    000016  4                Header length(26)
  968.  
  969.  
  970.